package com.CRApp.mapper;

import com.CRApp.pojo.Address;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 收货地址数据访问层接口
 * 提供收货地址相关的数据库操作方法
 */
@Mapper
public interface AddressMapper {
    /**
     * 添加收货地址
     * @param address 收货地址信息
     * @return 影响的行数
     */
    int insert(Address address);
    
    /**
     * 更新收货地址
     * @param address 收货地址信息
     * @return 影响的行数
     */
    int update(Address address);
    
    /**
     * 根据ID删除收货地址
     * @param addressesId 地址ID
     * @return 影响的行数
     */
    int deleteById(@Param("addressesId") Integer addressesId);
    
    /**
     * 根据用户ID删除所有收货地址
     * @param userId 用户ID
     * @return 影响的行数
     */
    int deleteByUserId(@Param("userId") Integer userId);
    
    /**
     * 根据ID查询收货地址
     * @param addressesId 地址ID
     * @return 收货地址信息
     */
    Address selectById(@Param("addressesId") Integer addressesId);
    
    /**
     * 查询用户的所有收货地址
     * @param userId 用户ID
     * @return 收货地址列表
     */
    List<Address> selectByUserId(@Param("userId") Integer userId);
    
    /**
     * 查询是否存在相同地址
     * @param address 详细地址
     * @return 地址ID，如果不存在则返回null
     */
    Integer selectAddressIdByAddress(@Param("address") String address);
} 